#include "messageHandle.h"

MessageHandle::MessageHandle(const stdTcpSocketPtr& clientInfo):m_function(clientInfo)
{
    //注册业务
    m_handle[REGESTER] = [this](const Msg &msg){ m_function.handleRegisterInfo(msg); };
    //登录业务
    m_handle[LOGIN] = [this](const Msg &msg){ m_function.handleLoginInfo(msg); };
    //添加好友
    m_handle[ADDFRIEND] = [this](const Msg &msg) {m_function.handlAddFriendInfo(msg);};
    //删除
    m_handle[DELFRIEND] = [this](const Msg &msg) {m_function.handlDelFriendInfo(msg);};
    //好友聊天
    m_handle[FRIENDCHAT] = [this](const Msg &msg) {m_function.handlFriendChat(msg);};
    //好友列表
    m_handle[FRIENDLIST] = [this](const Msg &msg) {m_function.handlFriendList(msg);};

    //建群
    m_handle[NEWGROUP] = [this](const Msg &msg) {m_function.handlNewGroupInfo(msg);};
    //退群
    m_handle[EXITGROUP] = [this](const Msg &msg) {m_function.handlExitGroupInfo(msg);};
    //加入群聊
    m_handle[JOINGROUP] = [this](const Msg &msg) {m_function.handlJoinGroup(msg);};
    //邀请进群
    m_handle[INVITEGROUP] = [this](const Msg &msg) {m_function.handlInviteGroup(msg);};
    //群聊聊天
    m_handle[CHATGROUP] = [this](const Msg &msg) {m_function.handlChatGroup(msg);};

}

MessageHandle::~MessageHandle() 
{
}
//处理信息
void MessageHandle::handleMessage(const Msg &msg)
{
    #if 0
    if(msg.type==REGESTER)
    {
        m_function.handleRegisterInfo(msg);
    }
    #endif
    auto iter=m_handle.find(msg.type);
    if(iter!=m_handle.end())
    {
        //执行回调函数
        iter->second(msg);
    }
    else
    {
        //处理位置的消息类型
        cout << "unknown message type!" << endl;
    }
}
